import service from '../utils/request'

// ==================== 认证相关 API ====================

/**
 * 用户登录
 * @param {Object} data 登录数据
 * @param {string} data.phone - 手机号
 * @param {string} data.password - 密码
 * @param {string} data.captcha - 验证码
 */
export function login(data) {
  return service.post('/api/auth/login', data)
}

/**
 * 用户注册
 * @param {Object} data 注册数据
 * @param {string} data.phone - 手机号
 * @param {string} data.password - 密码
 * @param {string} data.confirmPassword - 确认密码
 * @param {string} data.smsCode - 短信验证码
 * @param {string} data.captcha - 图形验证码
 */
export function register(data, captchaToken) {
  const suffix = captchaToken ? `?captchaToken=${encodeURIComponent(captchaToken)}` : ''
  return service.post(`/api/auth/register${suffix}`, data)
}

/**
 * 用户登出
 */
export function logout() {
  return service.post('/api/auth/logout')
}

/**
 * 刷新token
 * @param {string} refreshToken 刷新token
 */
export function refreshToken(refreshToken) {
  return service.post('/api/auth/refresh', { refreshToken })
}

/**
 * 获取图形验证码
 */
export function getCaptcha() {
  return service.get('/api/auth/captcha')
}

/**
 * 发送短信验证码
 * @param {Object} data 短信数据
 * @param {string} data.phone - 手机号
 * @param {string} data.type - 验证码类型：register/login/reset
 * @param {string} data.captcha - 图形验证码
 */
export function sendSmsCode(data, captchaToken) {
  const suffix = captchaToken ? `?captchaToken=${encodeURIComponent(captchaToken)}` : ''
  return service.post(`/api/auth/send-sms-code${suffix}`, data)
}

/**
 * 验证短信验证码
 * @param {Object} data 验证数据
 * @param {string} data.phone - 手机号
 * @param {string} data.code - 验证码
 * @param {string} data.type - 验证码类型
 */
export function verifySmsCode(data) {
  return service.post('/api/auth/verify-sms', data)
}

/**
 * 重置密码
 * @param {Object} data 重置数据
 * @param {string} data.phone - 手机号
 * @param {string} data.newPassword - 新密码
 * @param {string} data.confirmPassword - 确认新密码
 * @param {string} data.smsCode - 短信验证码
 */
export function resetPassword(data) {
  return service.post('/api/auth/reset-password', data)
}

/**
 * 修改密码
 * @param {Object} data 修改数据
 * @param {string} data.oldPassword - 旧密码
 * @param {string} data.newPassword - 新密码
 * @param {string} data.confirmPassword - 确认新密码
 */
export function changePassword(data) {
  return service.post('/api/auth/change-password', data)
}

/**
 * 检查token有效性
 */
export function checkToken() {
  return service.get('/api/auth/check')
}

/**
 * 获取当前用户信息
 */
export function getCurrentUser() {
  return service.get('/api/auth/user')
}

/**
 * 检查手机号是否存在
 * @param {string} phone 手机号
 */
export function checkPhoneExist(phone) {
  return service.post('/api/auth/check-phone', { phone })
}

/**
 * 短信验证码登录
 * @param {Object} data 登录数据
 * @param {string} data.phone - 手机号
 * @param {string} data.code - 短信验证码
 */
export function loginBySmsCode(data) {
  return service.post('/api/auth/login-by-sms', data)
}

/**
 * 密码登录
 * @param {Object} data 登录数据
 * @param {string} data.phone - 手机号
 * @param {string} data.password - 密码
 */
export function loginByPassword(data) {
  return service.post('/api/auth/login-by-password', data)
}

/**
 * 获取微信登录二维码
 */
export function getWxLoginQrCode() {
  return service.get('/api/auth/wx-login-qrcode')
}

/**
 * 检查微信登录状态
 * @param {string} ticket 微信登录票据
 */
export function checkWxLoginStatus(ticket) {
  return service.get('/api/auth/wx-login-status', { params: { ticket } })
}

/**
 * 微信登录
 * @param {Object} data 微信登录数据
 * @param {string} data.code - 微信授权码
 * @param {string} data.state - 状态参数
 */
export function loginByWechat(data) {
  return service.post('/api/auth/login-by-wechat', data)
}
